Arduino প্রোগ্রামিংয়ের মাধ্যমে Sensors এবং Actuators এর সাথে কাজ করে বিভিন্ন ধরনের ইলেকট্রনিক প্রকল্প তৈরি করা সম্ভব। সেন্সর এবং অ্যাকচুয়েটর ব্যবহার করে Arduino প্রকল্পগুলোকে স্মার্ট এবং ইন্টারঅ্যাকটিভ করা যায়।
Sensors হলো এমন ডিভাইস যা পরিবেশের বিভিন্ন প্যারামিটার যেমন তাপমাত্রা, আর্দ্রতা, আলো, গতি ইত্যাদি সংগ্রহ করে এবং Arduino-তে সিগন্যাল হিসেবে পাঠায়। সেন্সরগুলো সাধারণত দুটি ধরনের হতে পারে:
void setup() {
Serial.begin(9600); // সিরিয়াল মনিটর শুরু করা
}
void loop() {
int sensorValue = analogRead(A0); // A0 পিন থেকে সেন্সর মান পড়া
float temperature = (sensorValue * 5.0 / 1023.0) * 100; // তাপমাত্রা ক্যালকুলেশন
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" C");
delay(1000); // ১ সেকেন্ড বিরতি
}
Actuators হলো এমন ডিভাইস যা Arduino থেকে নির্দেশ পেয়ে কার্যক্রম পরিচালনা করে, যেমন মোটর, রিলে, সার্ভো ইত্যাদি। এগুলো বিভিন্ন প্রকারের হতে পারে:
void setup() {
pinMode(9, OUTPUT); // PWM আউটপুট পিন হিসেবে কনফিগার করা
}
void loop() {
analogWrite(9, 128); // মোটরের স্পিড ৫০% এ সেট করা (0-255 এর মধ্যে 128)
delay(2000); // ২ সেকেন্ড মোটর চালানো
analogWrite(9, 0); // মোটর বন্ধ করা
delay(2000); // ২ সেকেন্ড অপেক্ষা
}
pinMode()
ফাংশন ব্যবহার করে ইনপুট এবং আউটপুট পিন কনফিগার করুন।analogRead()
বা digitalRead()
ফাংশন ব্যবহার করে সেন্সর ডেটা পড়ুন এবং প্রসেস করুন।analogWrite()
বা digitalWrite()
ফাংশন ব্যবহার করে অ্যাকচুয়েটরে সিগন্যাল পাঠান।delay()
ব্যবহার করুন, যাতে সেন্সরের সঠিক মান পাওয়া যায় এবং অ্যাকচুয়েটরের কার্যক্রম নিয়ন্ত্রণ করা যায়।Serial.print()
ব্যবহার করে কোড ডিবাগ করুন।Arduino-তে Sensors এবং Actuators ব্যবহার করে বিভিন্ন স্মার্ট এবং ইন্টারঅ্যাকটিভ প্রোজেক্ট তৈরি করা যায়। এটি ব্যবহারকারীদের প্রকল্পে স্বয়ংক্রিয়তা এবং গতিশীলতা যুক্ত করতে সহায়তা করে, যা প্রকল্পগুলিকে আরও কার্যকর এবং বাস্তবিক করে তোলে।
Ultrasonic Sensor একটি বিশেষ ধরনের সেন্সর যা দূরত্ব মাপার জন্য ব্যবহৃত হয়। এটি মূলত শব্দ তরঙ্গের প্রতিফলন ব্যবহার করে একটি নির্দিষ্ট বস্তু পর্যন্ত দূরত্ব পরিমাপ করে। Arduino প্রোজেক্টে HC-SR04 মডেলটি সবচেয়ে বেশি ব্যবহৃত হয়।
এই সেন্সরে দুটি প্রধান পিন থাকে:
HC-SR04 সেন্সরটিকে Arduino বোর্ডে সংযুক্ত করতে চারটি পিন ব্যবহার করতে হবে:
Trigger পিনে একটি ১০ মাইক্রোসেকেন্ডের HIGH পালস পাঠানো হলে, সেন্সরটি একটি ৪০ kHz এর শব্দ তরঙ্গ প্রেরণ করে। বস্তু থেকে প্রতিফলিত হয়ে সেই তরঙ্গ Echo পিনে ফিরে আসে। Echo পিনে HIGH অবস্থায় থাকা সময়ের উপর ভিত্তি করে দূরত্ব নির্ধারণ করা হয়।
const int trigPin = 9; // Trigger পিন
const int echoPin = 10; // Echo পিন
void setup() {
pinMode(trigPin, OUTPUT); // Trigger পিনকে আউটপুট হিসেবে কনফিগার করা
pinMode(echoPin, INPUT); // Echo পিনকে ইনপুট হিসেবে কনফিগার করা
Serial.begin(9600); // সিরিয়াল মনিটর শুরু করা
}
void loop() {
long duration;
int distance;
// Trigger পিনে ১০ মাইক্রোসেকেন্ডের HIGH পালস পাঠানো
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Echo পিনে প্রতিফলিত সংকেত গ্রহণ করা
duration = pulseIn(echoPin, HIGH);
// দূরত্ব নির্ধারণ করা (সময়কে সেন্টিমিটারে রূপান্তর)
distance = duration * 0.034 / 2;
// দূরত্ব প্রিন্ট করা
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(500); // ০.৫ সেকেন্ড অপেক্ষা
}
digitalWrite(trigPin, HIGH)
: Trigger পিনে সংকেত পাঠানো।pulseIn(echoPin, HIGH)
: Echo পিনে সংকেত প্রাপ্তির সময় পরিমাপ।distance = duration * 0.034 / 2
: সময়কে দূরত্বে রূপান্তর করা (0.034 হলো শব্দের গতি (cm/μs) এবং দূরত্ব নির্ধারণের জন্য সময়কে ২ দিয়ে ভাগ করা হয়)।Ultrasonic Sensor ব্যবহারের মাধ্যমে সহজে এবং কার্যকরভাবে বিভিন্ন প্রকার দূরত্ব নির্ধারণ প্রোজেক্ট তৈরি করা যায়। এটি বিভিন্ন প্রকল্পে যেমন রোবটিক্স, নিরাপত্তা ব্যবস্থা এবং স্বয়ংক্রিয় প্রক্রিয়ায় বহুল ব্যবহৃত হয়।
LM35 হলো একটি সুনির্দিষ্ট এবং সহজে ব্যবহারযোগ্য তাপমাত্রা সেন্সর যা তাপমাত্রা পরিমাপ করতে ব্যবহৃত হয়। এটি সেলসিয়াস স্কেলে তাপমাত্রা পড়ে এবং সরাসরি ভোল্টেজ আউটপুট প্রদান করে, যা Arduino দিয়ে সহজে পড়া এবং প্রক্রিয়াকৃত করা যায়।
LM35 তাপমাত্রা সেন্সরটিকে Arduino বোর্ডের সাথে নিচেরভাবে সংযুক্ত করুন:
নিচে LM35 তাপমাত্রা সেন্সর থেকে ডেটা পড়ে তাপমাত্রা সিরিয়াল মনিটরে প্রিন্ট করার একটি উদাহরণ দেওয়া হলো:
void setup() {
Serial.begin(9600); // সিরিয়াল কমিউনিকেশন শুরু করা
}
void loop() {
int sensorValue = analogRead(A0); // A0 পিন থেকে এনালগ ডেটা পড়া
float voltage = sensorValue * (5.0 / 1023.0); // সেন্সর মানকে ভোল্টেজে রূপান্তর করা
float temperature = voltage * 100; // তাপমাত্রা সেলসিয়াসে রূপান্তর করা
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
delay(1000); // ১ সেকেন্ড অপেক্ষা
}
analogRead(A0)
: A0 পিন থেকে ১০-বিট এনালগ মান পড়ে, যার মান ০ থেকে ১০২৩ পর্যন্ত হতে পারে।voltage = sensorValue * (5.0 / 1023.0)
: সেন্সরের মানকে ভোল্টেজে রূপান্তর করা হয়, যেখানে ৫V হলো রেফারেন্স ভোল্টেজ।temperature = voltage * 100
: LM35 সেন্সর প্রতি ডিগ্রি সেলসিয়াসে ১০ mV আউটপুট দেয়। তাই ভোল্টেজ মানকে ১০০ দিয়ে গুণ করলে তাপমাত্রা সেলসিয়াসে পাওয়া যায়।আপনি এই প্রকল্পে এলার্ম সিস্টেম যুক্ত করতে পারেন, যা নির্দিষ্ট তাপমাত্রার উপরে পৌঁছালে এলইডি জ্বলে ওঠে বা বীপ দেয়:
void setup() {
pinMode(13, OUTPUT); // পিন ১৩ কে আউটপুট হিসেবে কনফিগার করা (LED)
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
float temperature = voltage * 100;
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
if (temperature > 30) { // যদি তাপমাত্রা ৩০°C এর বেশি হয়
digitalWrite(13, HIGH); // LED অন করা
} else {
digitalWrite(13, LOW); // LED অফ করা
}
delay(1000);
}
LM35 সেন্সরের মাধ্যমে Arduino-তে তাপমাত্রা পরিমাপ করা সহজ এবং কার্যকরী। এটি তাপমাত্রা মনিটরিং, স্বয়ংক্রিয় কুলিং সিস্টেম এবং অন্যান্য IoT প্রোজেক্টের জন্য উপযুক্ত।
Servo Motor হলো একটি বিশেষ ধরনের মোটর যা নির্দিষ্ট কোণ বা অবস্থানে সঠিকভাবে নিয়ন্ত্রণ করা যায়। এটি সাধারণত রোবটিক্স, মেশিন, এবং কন্ট্রোল সিস্টেমে ব্যবহৃত হয় যেখানে মোটরের নির্দিষ্ট কোণে ঘুরানোর প্রয়োজন হয়। Arduino তে Servo Motor ব্যবহার করা খুবই সহজ এবং কার্যকরী।
Servo Motor-এর তিনটি সংযোগ পিন থাকে:
Servo Motor পিন সংযোগ:
[VCC] ----- [5V] Arduino
[GND] ----- [GND] Arduino
[Signal] -- [Pin 9] Arduino
Arduino IDE তে Servo Motor পরিচালনা করতে, Servo.h
লাইব্রেরি ব্যবহার করা হয়। এই লাইব্রেরিটি Servo Motor নিয়ন্ত্রণ করার জন্য প্রয়োজনীয় ফাংশন এবং পদ্ধতি প্রদান করে।
#include <Servo.h> // Servo লাইব্রেরি ইনক্লুড করা
Servo Motor কে নির্দিষ্ট কোণ থেকে অন্য কোণে ঘোরানোর উদাহরণ:
#include <Servo.h> // Servo লাইব্রেরি ইনক্লুড করা
Servo myServo; // Servo অবজেক্ট তৈরি
void setup() {
myServo.attach(9); // Servo মোটর Arduino এর পিন ৯ এ সংযুক্ত
}
void loop() {
myServo.write(0); // Servo কে ০ ডিগ্রীতে ঘোরানো
delay(1000); // ১ সেকেন্ড অপেক্ষা
myServo.write(90); // Servo কে ৯০ ডিগ্রীতে ঘোরানো
delay(1000); // ১ সেকেন্ড অপেক্ষা
myServo.write(180); // Servo কে ১৮০ ডিগ্রীতে ঘোরানো
delay(1000); // ১ সেকেন্ড অপেক্ষা
}
Servo myServo;
: একটি Servo অবজেক্ট তৈরি করা হয়, যা মোটর নিয়ন্ত্রণ করতে ব্যবহৃত হবে।myServo.attach(9);
: Servo মোটরকে Arduino এর পিন ৯ এর সাথে সংযুক্ত করা হয়।myServo.write(angle);
: Servo কে নির্দিষ্ট কোণে ঘোরানো হয়। এখানে angle
মান ০ থেকে ১৮০ ডিগ্রীর মধ্যে হতে পারে।Servo Motor কে Potentiometer ব্যবহার করে নিয়ন্ত্রণের উদাহরণ:
#include <Servo.h>
Servo myServo;
const int potPin = A0; // Potentiometer সংযুক্ত পিন
void setup() {
myServo.attach(9); // Servo মোটর পিন ৯ এ সংযুক্ত
}
void loop() {
int potValue = analogRead(potPin); // Potentiometer থেকে মান পড়া
int angle = map(potValue, 0, 1023, 0, 180); // মানকে কোণে রূপান্তর করা
myServo.write(angle); // Servo মোটরকে কোণে ঘোরানো
delay(15); // সামান্য বিলম্ব
}
analogRead(potPin);
: Potentiometer থেকে মান পড়া হয়।map(potValue, 0, 1023, 0, 180);
: Potentiometer থেকে প্রাপ্ত মানকে Servo মোটরের কোণে রূপান্তর করা হয় (০ থেকে ১৮০ ডিগ্রী)।myServo.write(angle);
: Servo মোটরকে নির্দিষ্ট কোণে ঘোরানো হয়।delay()
ব্যবহার করলে Servo তার গন্তব্যে সঠিকভাবে পৌঁছাতে পারে।Servo Motor Arduino তে ব্যবহার করে বিভিন্ন প্রজেক্টে সহজে এবং সুনির্দিষ্ট নিয়ন্ত্রণ অর্জন করা যায়। এটি রোবটিক্স, অটোমেশন এবং বিভিন্ন যান্ত্রিক ডিভাইস তৈরি করতে ব্যবহৃত হয়।
DC Motor হলো একটি মোটর যা সরাসরি ডিসি ভোল্টেজ ব্যবহার করে ঘূর্ণনশীল গতিতে কাজ করে। এটি বিভিন্ন ইলেকট্রনিক প্রোজেক্টে ব্যবহৃত হয়, যেমন রোবটিক্স, অটোমেশন এবং অন্যান্য মেকানিক্যাল সিস্টেম। DC Motor-এর গতি এবং দিক নির্দিষ্টভাবে নিয়ন্ত্রণ করার জন্য একটি Motor Driver প্রয়োজন হয়।
L298N Motor Driver একটি দ্বৈত H-Bridge ড্রাইভার যা দুটি DC মোটরকে একসঙ্গে নিয়ন্ত্রণ করতে সক্ষম। এটি মোটরের গতি এবং ঘূর্ণনের দিক নিয়ন্ত্রণ করতে সহায়তা করে। L298N ড্রাইভার সাধারণত একটি মডিউল আকারে আসে, যা সহজে Arduino সহ অন্যান্য মাইক্রোকন্ট্রোলার বোর্ডের সাথে সংযুক্ত করা যায়।
12V
পিনে একটি উপযুক্ত ডিসি পাওয়ার সাপ্লাই সংযুক্ত করুন এবং GND
পিনটি Arduino-এর GND এর সাথে সংযুক্ত করুন।নিচে একটি উদাহরণ কোড দেওয়া হলো যা একটি DC Motor কে L298N ড্রাইভার দিয়ে Arduino-এর মাধ্যমে নিয়ন্ত্রণ করে:
int in1 = 7;
int in2 = 8;
int ena = 9; // PWM পিন
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(ena, OUTPUT);
}
void loop() {
// মোটর ঘড়ির কাঁটার দিকে ঘুরানো
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(ena, 150); // মোটরের গতি ০ থেকে ২৫৫ এর মধ্যে নির্ধারণ করা যায় (৫০% গতি)
delay(2000); // ২ সেকেন্ড অপেক্ষা
// মোটর বন্ধ করা
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
delay(1000); // ১ সেকেন্ড অপেক্ষা
// মোটর বিপরীত দিকে ঘুরানো
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(ena, 150);
delay(2000); // ২ সেকেন্ড অপেক্ষা
// মোটর বন্ধ করা
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
delay(1000); // ১ সেকেন্ড অপেক্ষা
}
ENA
বা ENB
পিনে analogWrite()
ফাংশনের মাধ্যমে PWM সংকেত প্রেরণ করে মোটরের গতি নিয়ন্ত্রণ করা যায়।IN1
এবং IN2
পিনের HIGH এবং LOW অবস্থা পরিবর্তন করে মোটরের ঘূর্ণনের দিক নিয়ন্ত্রণ করা হয়।DC Motor এবং L298N Motor Driver-এর সাহায্যে Arduino প্রোজেক্টে মোটরের গতি এবং দিক নিয়ন্ত্রণ করা খুব সহজ এবং কার্যকর। এটি বিভিন্ন ইলেকট্রনিক প্রোজেক্টে অটোমেশন এবং কাস্টম মেকানিজম তৈরি করতে সহায়তা করে।
common.read_more